home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
novell
/
nw386
/
ram-2.386
< prev
next >
Wrap
Text File
|
1996-07-10
|
6KB
|
173 lines
Chapter 2
RAM Requirements
The NetWare 386 operating system runs on a computer with
an 80386 CPU that can address up to 4GB of RAM. A NetWare
386 server requires at least 2MB of RAM divided among
DOS, the NetWare 386 operating system, and units of cache
buffers. Since the memory needs of DOS and the initial
NetWare OS are relatively constant, this chapter deals
primarily with how the cache buffers are used. It
includes the following sections:
■ Cache Buffers
■ Dynamic Configuration
Cache Buffers
The NetWare operating system requires a portion of the
386 RAM for itself and a portion for cache buffers. The
default cache buffer size is 4KB. When booting the
computer with the NetWare operating system, a supervisor
can specify a cache buffer size of 4KB, 8KB, or 16KB. The
server uses these cache buffers in a variety of ways:
■ The server loans cache buffers to NetWare Loadable
Modules (NLMs) such as LAN drivers, disk drivers,
the INSTALL utility, and the VREPAIR utility. When
a loadable module such as the INSTALL utility is
removed from server memory, the module returns the
borrowed memory to the cache buffer pool.
■ The server allocates sufficient cache buffers to
cache each volume's entire FAT in memory.■The server allocates enough cache buffers to cache
parts of each volume's Directory Table.
■ The server uses cache buffers as needed to cache
parts of files that users want to access.
■ The server allocates cache buffers to build a hash
table for all directory names.
■ The server allocates cache buffers to build Turbo
FAT Indexing Tables for all open files that have 64
FAT entries or more and are randomly accessed.
Dynamic Configuration
In earlier versions of NetWare, a supervisor installing
NetWare on a server had to allocate a certain amount of
server memory for features such as directory cache blocks
and routing buffers. However in NetWare 386, the
following features allocate memory for themselves
dynamically, based on need and available memory:
■ Directory cache buffers
■ File service processes
■ Turbo FAT index tables
■ FAT tables
■ Routing buffers
■ Disk elevator size
■ Directory hash tables
■ Router/server advertising memory
■ Maximum number of open files
■ File locks
■ Kernel processes
■ Kernel semaphores
■ TTS transactions
■ Memory for loadable modules
However, this self-configuration in which a process
allocates memory according to its need is somewhat
restricted. To prevent memory allocation because of
sudden, infrequent peaks of server activity, the server
waits a few seconds after a need arises. Then, if an
existing process becomes available to service the need,
further memory allocation is unnecessary.Dynamic memory allocation can be done in five ways, two
that are nonreturnable and three that are returnable.
NonReturnable Memory
Nonreturnable memory is not returned to the file cache
buffer after it is deallocated, unless the server is
brought down. However, with one exception (Permanent
Memory Alloc Pool), nonreturnable memory can be returned
to the memory pool from which it is allocated.
Alloc Pool
■ Allocates memory quickly, efficiently
■ Allocates memory in sizes smaller than 4KB cache
block
■ Allocates memory needed for a short time
(For example, time to service a single request,
the duration of a user session)
■ Allocates exact size of memory requested
■ Does NOT return memory to the file cache buffer pool
■ Returns memory to memory pool
■ Does NOT move memory
Permanent Memory Alloc Pool
■ Allocates memory in any size
■ Allocates exact size of memory requested
■ NEVER returns memory to the file cache buffer pool
(NLMs cannot
use this allocater)
■ NEVER returns memory to memory pool
■ Does NOT move memory
Permanent Returnable
■ Allocates memory in size smaller than 4KB cache
block
■ Allocates memory needed for a long time
■ Allocates exact size of memory requested
■ Does NOT return memory to the file cache buffer pool
■ Returns memory to memory pool
■ Does NOT move MemoryReturnable Memory
Memory that is returnable is returned to the file cache
buffer pool after it is deallocated. All returnable
memory is also returned to the memory pool after it is
deallocated.
NonMovable Memory (Used by NLMs)
■ Allocates memory in large cache blocks of 4KB,
8KB, or 16KB
■ Allocates memory for any period of time
■ Returns memory to the file cache buffer pool
■ Returns memory to memory pool
■ Does NOT move Memory
Movable Memory
■ Allocates memory in large cache blocks of 4KB, 8KB,
or
16KB that may need to be expanded (Used for system
tables
that can grow because of dynamic configuration.)
■ Allocates memory for any period of time
■ Returns memory to the file cache buffer pool
■ Returns memory to memory pool
■ Moves memory (Special routines must be provided to
adjust
pointers to this memory. Pointers used to access
this memory
must be reloaded into registers any time the code
makes a call
to a function that could cause the process to
block.)
■ Causes no fragmentation of cache buffer memory pool
Dynamic memory allocation allows the number of cache
buffers needed for Directory Table blocks to grow
according to demand. The number of Turbo FATs also grows
when another file needs to be indexed.